/**
 * openHAB, the open Home Automation Bus.
 * Copyright (C) 2011, openHAB.org <admin@openhab.org>
 *
 * See the contributors.txt file in the distribution for a
 * full listing of individual contributors.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, see <http://www.gnu.org/licenses>.
 *
 * Additional permission under GNU GPL version 3 section 7
 *
 * If you modify this Program, or any covered work, by linking or
 * combining it with Eclipse (or a modified version of that library),
 * containing parts covered by the terms of the Eclipse Public License
 * (EPL), the licensors of this Program grant you additional permission
 * to convey the resulting work.
 */

/*
* generated by Xtext
*/

package org.openhab.model.services;

import com.google.inject.Singleton;
import com.google.inject.Inject;

import org.eclipse.xtext.*;
import org.eclipse.xtext.service.GrammarProvider;
import org.eclipse.xtext.service.AbstractElementFinder.*;

import org.eclipse.xtext.common.services.TerminalsGrammarAccess;

@Singleton
public class SitemapGrammarAccess extends AbstractGrammarElementFinder {
	
	
	public class SitemapModelElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SitemapModel");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cSitemapKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final RuleCall cSitemapParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		
		//SitemapModel:
		//	"sitemap" Sitemap;
		public ParserRule getRule() { return rule; }

		//"sitemap" Sitemap
		public Group getGroup() { return cGroup; }

		//"sitemap"
		public Keyword getSitemapKeyword_0() { return cSitemapKeyword_0; }

		//Sitemap
		public RuleCall getSitemapParserRuleCall_1() { return cSitemapParserRuleCall_1; }
	}

	public class SitemapElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Sitemap");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cLabelKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cLabelAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cLabelSTRINGTerminalRuleCall_1_1_0 = (RuleCall)cLabelAssignment_1_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cIconKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cIconAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cIconSTRINGTerminalRuleCall_2_1_0 = (RuleCall)cIconAssignment_2_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cChildrenAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cChildrenWidgetParserRuleCall_4_0 = (RuleCall)cChildrenAssignment_4.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//Sitemap:
		//	name=ID ("label=" label=STRING)? ("icon=" icon=STRING)? "{" children+=Widget+ "}";
		public ParserRule getRule() { return rule; }

		//name=ID ("label=" label=STRING)? ("icon=" icon=STRING)? "{" children+=Widget+ "}"
		public Group getGroup() { return cGroup; }

		//name=ID
		public Assignment getNameAssignment_0() { return cNameAssignment_0; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }

		//("label=" label=STRING)?
		public Group getGroup_1() { return cGroup_1; }

		//"label="
		public Keyword getLabelKeyword_1_0() { return cLabelKeyword_1_0; }

		//label=STRING
		public Assignment getLabelAssignment_1_1() { return cLabelAssignment_1_1; }

		//STRING
		public RuleCall getLabelSTRINGTerminalRuleCall_1_1_0() { return cLabelSTRINGTerminalRuleCall_1_1_0; }

		//("icon=" icon=STRING)?
		public Group getGroup_2() { return cGroup_2; }

		//"icon="
		public Keyword getIconKeyword_2_0() { return cIconKeyword_2_0; }

		//icon=STRING
		public Assignment getIconAssignment_2_1() { return cIconAssignment_2_1; }

		//STRING
		public RuleCall getIconSTRINGTerminalRuleCall_2_1_0() { return cIconSTRINGTerminalRuleCall_2_1_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }

		//children+=Widget+
		public Assignment getChildrenAssignment_4() { return cChildrenAssignment_4; }

		//Widget
		public RuleCall getChildrenWidgetParserRuleCall_4_0() { return cChildrenWidgetParserRuleCall_4_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
	}

	public class WidgetElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Widget");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cLinkableWidgetParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Alternatives cAlternatives_1_0 = (Alternatives)cGroup_1.eContents().get(0);
		private final RuleCall cSwitchParserRuleCall_1_0_0 = (RuleCall)cAlternatives_1_0.eContents().get(0);
		private final RuleCall cSelectionParserRuleCall_1_0_1 = (RuleCall)cAlternatives_1_0.eContents().get(1);
		private final RuleCall cListParserRuleCall_1_0_2 = (RuleCall)cAlternatives_1_0.eContents().get(2);
		private final Group cGroup_1_1 = (Group)cGroup_1.eContents().get(1);
		private final Keyword cLabelKeyword_1_1_0 = (Keyword)cGroup_1_1.eContents().get(0);
		private final Assignment cLabelAssignment_1_1_1 = (Assignment)cGroup_1_1.eContents().get(1);
		private final Alternatives cLabelAlternatives_1_1_1_0 = (Alternatives)cLabelAssignment_1_1_1.eContents().get(0);
		private final RuleCall cLabelIDTerminalRuleCall_1_1_1_0_0 = (RuleCall)cLabelAlternatives_1_1_1_0.eContents().get(0);
		private final RuleCall cLabelSTRINGTerminalRuleCall_1_1_1_0_1 = (RuleCall)cLabelAlternatives_1_1_1_0.eContents().get(1);
		private final Group cGroup_1_2 = (Group)cGroup_1.eContents().get(2);
		private final Keyword cIconKeyword_1_2_0 = (Keyword)cGroup_1_2.eContents().get(0);
		private final Assignment cIconAssignment_1_2_1 = (Assignment)cGroup_1_2.eContents().get(1);
		private final Alternatives cIconAlternatives_1_2_1_0 = (Alternatives)cIconAssignment_1_2_1.eContents().get(0);
		private final RuleCall cIconIDTerminalRuleCall_1_2_1_0_0 = (RuleCall)cIconAlternatives_1_2_1_0.eContents().get(0);
		private final RuleCall cIconSTRINGTerminalRuleCall_1_2_1_0_1 = (RuleCall)cIconAlternatives_1_2_1_0.eContents().get(1);
		
		//Widget:
		//	LinkableWidget | (Switch | Selection | List) ("label=" label=(ID | STRING))? ("icon=" icon=(ID | STRING))?;
		public ParserRule getRule() { return rule; }

		//LinkableWidget | (Switch | Selection | List) ("label=" label=(ID | STRING))? ("icon=" icon=(ID | STRING))?
		public Alternatives getAlternatives() { return cAlternatives; }

		//LinkableWidget
		public RuleCall getLinkableWidgetParserRuleCall_0() { return cLinkableWidgetParserRuleCall_0; }

		//(Switch | Selection | List) ("label=" label=(ID | STRING))? ("icon=" icon=(ID | STRING))?
		public Group getGroup_1() { return cGroup_1; }

		//Switch | Selection | List
		public Alternatives getAlternatives_1_0() { return cAlternatives_1_0; }

		//Switch
		public RuleCall getSwitchParserRuleCall_1_0_0() { return cSwitchParserRuleCall_1_0_0; }

		//Selection
		public RuleCall getSelectionParserRuleCall_1_0_1() { return cSelectionParserRuleCall_1_0_1; }

		//List
		public RuleCall getListParserRuleCall_1_0_2() { return cListParserRuleCall_1_0_2; }

		//("label=" label=(ID | STRING))?
		public Group getGroup_1_1() { return cGroup_1_1; }

		//"label="
		public Keyword getLabelKeyword_1_1_0() { return cLabelKeyword_1_1_0; }

		//label=(ID | STRING)
		public Assignment getLabelAssignment_1_1_1() { return cLabelAssignment_1_1_1; }

		//ID | STRING
		public Alternatives getLabelAlternatives_1_1_1_0() { return cLabelAlternatives_1_1_1_0; }

		//ID
		public RuleCall getLabelIDTerminalRuleCall_1_1_1_0_0() { return cLabelIDTerminalRuleCall_1_1_1_0_0; }

		//STRING
		public RuleCall getLabelSTRINGTerminalRuleCall_1_1_1_0_1() { return cLabelSTRINGTerminalRuleCall_1_1_1_0_1; }

		//("icon=" icon=(ID | STRING))?
		public Group getGroup_1_2() { return cGroup_1_2; }

		//"icon="
		public Keyword getIconKeyword_1_2_0() { return cIconKeyword_1_2_0; }

		//icon=(ID | STRING)
		public Assignment getIconAssignment_1_2_1() { return cIconAssignment_1_2_1; }

		//ID | STRING
		public Alternatives getIconAlternatives_1_2_1_0() { return cIconAlternatives_1_2_1_0; }

		//ID
		public RuleCall getIconIDTerminalRuleCall_1_2_1_0_0() { return cIconIDTerminalRuleCall_1_2_1_0_0; }

		//STRING
		public RuleCall getIconSTRINGTerminalRuleCall_1_2_1_0_1() { return cIconSTRINGTerminalRuleCall_1_2_1_0_1; }
	}

	public class LinkableWidgetElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LinkableWidget");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final RuleCall cTextParserRuleCall_0_0 = (RuleCall)cAlternatives_0.eContents().get(0);
		private final RuleCall cGroupParserRuleCall_0_1 = (RuleCall)cAlternatives_0.eContents().get(1);
		private final RuleCall cImageParserRuleCall_0_2 = (RuleCall)cAlternatives_0.eContents().get(2);
		private final RuleCall cFrameParserRuleCall_0_3 = (RuleCall)cAlternatives_0.eContents().get(3);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cLabelKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cLabelAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final Alternatives cLabelAlternatives_1_1_0 = (Alternatives)cLabelAssignment_1_1.eContents().get(0);
		private final RuleCall cLabelIDTerminalRuleCall_1_1_0_0 = (RuleCall)cLabelAlternatives_1_1_0.eContents().get(0);
		private final RuleCall cLabelSTRINGTerminalRuleCall_1_1_0_1 = (RuleCall)cLabelAlternatives_1_1_0.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cIconKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cIconAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final Alternatives cIconAlternatives_2_1_0 = (Alternatives)cIconAssignment_2_1.eContents().get(0);
		private final RuleCall cIconIDTerminalRuleCall_2_1_0_0 = (RuleCall)cIconAlternatives_2_1_0.eContents().get(0);
		private final RuleCall cIconSTRINGTerminalRuleCall_2_1_0_1 = (RuleCall)cIconAlternatives_2_1_0.eContents().get(1);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cLeftCurlyBracketKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cChildrenAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cChildrenWidgetParserRuleCall_3_1_0 = (RuleCall)cChildrenAssignment_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_3_2 = (Keyword)cGroup_3.eContents().get(2);
		
		//LinkableWidget:
		//	(Text | Group | Image | Frame) ("label=" label=(ID | STRING))? ("icon=" icon=(ID | STRING))? ("{" children+=Widget+
		//	"}")?;
		public ParserRule getRule() { return rule; }

		//(Text | Group | Image | Frame) ("label=" label=(ID | STRING))? ("icon=" icon=(ID | STRING))? ("{" children+=Widget+
		//"}")?
		public Group getGroup() { return cGroup; }

		//Text | Group | Image | Frame
		public Alternatives getAlternatives_0() { return cAlternatives_0; }

		//Text
		public RuleCall getTextParserRuleCall_0_0() { return cTextParserRuleCall_0_0; }

		//Group
		public RuleCall getGroupParserRuleCall_0_1() { return cGroupParserRuleCall_0_1; }

		//Image
		public RuleCall getImageParserRuleCall_0_2() { return cImageParserRuleCall_0_2; }

		//Frame
		public RuleCall getFrameParserRuleCall_0_3() { return cFrameParserRuleCall_0_3; }

		//("label=" label=(ID | STRING))?
		public Group getGroup_1() { return cGroup_1; }

		//"label="
		public Keyword getLabelKeyword_1_0() { return cLabelKeyword_1_0; }

		//label=(ID | STRING)
		public Assignment getLabelAssignment_1_1() { return cLabelAssignment_1_1; }

		//ID | STRING
		public Alternatives getLabelAlternatives_1_1_0() { return cLabelAlternatives_1_1_0; }

		//ID
		public RuleCall getLabelIDTerminalRuleCall_1_1_0_0() { return cLabelIDTerminalRuleCall_1_1_0_0; }

		//STRING
		public RuleCall getLabelSTRINGTerminalRuleCall_1_1_0_1() { return cLabelSTRINGTerminalRuleCall_1_1_0_1; }

		//("icon=" icon=(ID | STRING))?
		public Group getGroup_2() { return cGroup_2; }

		//"icon="
		public Keyword getIconKeyword_2_0() { return cIconKeyword_2_0; }

		//icon=(ID | STRING)
		public Assignment getIconAssignment_2_1() { return cIconAssignment_2_1; }

		//ID | STRING
		public Alternatives getIconAlternatives_2_1_0() { return cIconAlternatives_2_1_0; }

		//ID
		public RuleCall getIconIDTerminalRuleCall_2_1_0_0() { return cIconIDTerminalRuleCall_2_1_0_0; }

		//STRING
		public RuleCall getIconSTRINGTerminalRuleCall_2_1_0_1() { return cIconSTRINGTerminalRuleCall_2_1_0_1; }

		//("{" children+=Widget+ "}")?
		public Group getGroup_3() { return cGroup_3; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }

		//children+=Widget+
		public Assignment getChildrenAssignment_3_1() { return cChildrenAssignment_3_1; }

		//Widget
		public RuleCall getChildrenWidgetParserRuleCall_3_1_0() { return cChildrenWidgetParserRuleCall_3_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_3_2() { return cRightCurlyBracketKeyword_3_2; }
	}

	public class FrameElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Frame");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cFrameKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Action cFrameAction_1 = (Action)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cItemKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cItemAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cItemIDTerminalRuleCall_2_1_0 = (RuleCall)cItemAssignment_2_1.eContents().get(0);
		
		//Frame:
		//	"Frame" {Frame} ("item=" item=ID)?;
		public ParserRule getRule() { return rule; }

		//"Frame" {Frame} ("item=" item=ID)?
		public Group getGroup() { return cGroup; }

		//"Frame"
		public Keyword getFrameKeyword_0() { return cFrameKeyword_0; }

		//{Frame}
		public Action getFrameAction_1() { return cFrameAction_1; }

		//("item=" item=ID)?
		public Group getGroup_2() { return cGroup_2; }

		//"item="
		public Keyword getItemKeyword_2_0() { return cItemKeyword_2_0; }

		//item=ID
		public Assignment getItemAssignment_2_1() { return cItemAssignment_2_1; }

		//ID
		public RuleCall getItemIDTerminalRuleCall_2_1_0() { return cItemIDTerminalRuleCall_2_1_0; }
	}

	public class TextElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Text");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cTextKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Action cTextAction_1 = (Action)cGroup.eContents().get(1);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cItemKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cItemAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cItemIDTerminalRuleCall_2_1_0 = (RuleCall)cItemAssignment_2_1.eContents().get(0);
		
		//Text:
		//	"Text" {Text} ("item=" item=ID)?;
		public ParserRule getRule() { return rule; }

		//"Text" {Text} ("item=" item=ID)?
		public Group getGroup() { return cGroup; }

		//"Text"
		public Keyword getTextKeyword_0() { return cTextKeyword_0; }

		//{Text}
		public Action getTextAction_1() { return cTextAction_1; }

		//("item=" item=ID)?
		public Group getGroup_2() { return cGroup_2; }

		//"item="
		public Keyword getItemKeyword_2_0() { return cItemKeyword_2_0; }

		//item=ID
		public Assignment getItemAssignment_2_1() { return cItemAssignment_2_1; }

		//ID
		public RuleCall getItemIDTerminalRuleCall_2_1_0() { return cItemIDTerminalRuleCall_2_1_0; }
	}

	public class GroupElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Group");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cGroupKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cItemKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cItemAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cItemIDTerminalRuleCall_1_1_0 = (RuleCall)cItemAssignment_1_1.eContents().get(0);
		
		//Group:
		//	"Group" ("item=" item=ID);
		public ParserRule getRule() { return rule; }

		//"Group" ("item=" item=ID)
		public Group getGroup() { return cGroup; }

		//"Group"
		public Keyword getGroupKeyword_0() { return cGroupKeyword_0; }

		//"item=" item=ID
		public Group getGroup_1() { return cGroup_1; }

		//"item="
		public Keyword getItemKeyword_1_0() { return cItemKeyword_1_0; }

		//item=ID
		public Assignment getItemAssignment_1_1() { return cItemAssignment_1_1; }

		//ID
		public RuleCall getItemIDTerminalRuleCall_1_1_0() { return cItemIDTerminalRuleCall_1_1_0; }
	}

	public class ImageElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Image");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cImageKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cItemKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cItemAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cItemIDTerminalRuleCall_1_1_0 = (RuleCall)cItemAssignment_1_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cUrlKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cUrlAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cUrlSTRINGTerminalRuleCall_2_1_0 = (RuleCall)cUrlAssignment_2_1.eContents().get(0);
		
		//Image:
		//	"Image" ("item=" item=ID)? ("url=" url=STRING);
		public ParserRule getRule() { return rule; }

		//"Image" ("item=" item=ID)? ("url=" url=STRING)
		public Group getGroup() { return cGroup; }

		//"Image"
		public Keyword getImageKeyword_0() { return cImageKeyword_0; }

		//("item=" item=ID)?
		public Group getGroup_1() { return cGroup_1; }

		//"item="
		public Keyword getItemKeyword_1_0() { return cItemKeyword_1_0; }

		//item=ID
		public Assignment getItemAssignment_1_1() { return cItemAssignment_1_1; }

		//ID
		public RuleCall getItemIDTerminalRuleCall_1_1_0() { return cItemIDTerminalRuleCall_1_1_0; }

		//"url=" url=STRING
		public Group getGroup_2() { return cGroup_2; }

		//"url="
		public Keyword getUrlKeyword_2_0() { return cUrlKeyword_2_0; }

		//url=STRING
		public Assignment getUrlAssignment_2_1() { return cUrlAssignment_2_1; }

		//STRING
		public RuleCall getUrlSTRINGTerminalRuleCall_2_1_0() { return cUrlSTRINGTerminalRuleCall_2_1_0; }
	}

	public class SwitchElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Switch");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cSwitchKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cItemKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cItemAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cItemIDTerminalRuleCall_1_1_0 = (RuleCall)cItemAssignment_1_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cMappingsKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cMappingsAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cMappingsMappingParserRuleCall_2_1_0 = (RuleCall)cMappingsAssignment_2_1.eContents().get(0);
		private final Group cGroup_2_2 = (Group)cGroup_2.eContents().get(2);
		private final Keyword cCommaKeyword_2_2_0 = (Keyword)cGroup_2_2.eContents().get(0);
		private final Assignment cMappingsAssignment_2_2_1 = (Assignment)cGroup_2_2.eContents().get(1);
		private final RuleCall cMappingsMappingParserRuleCall_2_2_1_0 = (RuleCall)cMappingsAssignment_2_2_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
		
		//Switch:
		//	"Switch" ("item=" item=ID) ("mappings=[" mappings+=Mapping ("," mappings+=Mapping)* "]")?;
		public ParserRule getRule() { return rule; }

		//"Switch" ("item=" item=ID) ("mappings=[" mappings+=Mapping ("," mappings+=Mapping)* "]")?
		public Group getGroup() { return cGroup; }

		//"Switch"
		public Keyword getSwitchKeyword_0() { return cSwitchKeyword_0; }

		//"item=" item=ID
		public Group getGroup_1() { return cGroup_1; }

		//"item="
		public Keyword getItemKeyword_1_0() { return cItemKeyword_1_0; }

		//item=ID
		public Assignment getItemAssignment_1_1() { return cItemAssignment_1_1; }

		//ID
		public RuleCall getItemIDTerminalRuleCall_1_1_0() { return cItemIDTerminalRuleCall_1_1_0; }

		//("mappings=[" mappings+=Mapping ("," mappings+=Mapping)* "]")?
		public Group getGroup_2() { return cGroup_2; }

		//"mappings=["
		public Keyword getMappingsKeyword_2_0() { return cMappingsKeyword_2_0; }

		//mappings+=Mapping
		public Assignment getMappingsAssignment_2_1() { return cMappingsAssignment_2_1; }

		//Mapping
		public RuleCall getMappingsMappingParserRuleCall_2_1_0() { return cMappingsMappingParserRuleCall_2_1_0; }

		//("," mappings+=Mapping)*
		public Group getGroup_2_2() { return cGroup_2_2; }

		//","
		public Keyword getCommaKeyword_2_2_0() { return cCommaKeyword_2_2_0; }

		//mappings+=Mapping
		public Assignment getMappingsAssignment_2_2_1() { return cMappingsAssignment_2_2_1; }

		//Mapping
		public RuleCall getMappingsMappingParserRuleCall_2_2_1_0() { return cMappingsMappingParserRuleCall_2_2_1_0; }

		//"]"
		public Keyword getRightSquareBracketKeyword_2_3() { return cRightSquareBracketKeyword_2_3; }
	}

	public class SelectionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Selection");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cSelectionKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cItemKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cItemAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cItemIDTerminalRuleCall_1_1_0 = (RuleCall)cItemAssignment_1_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cMappingsKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cMappingsAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cMappingsMappingParserRuleCall_2_1_0 = (RuleCall)cMappingsAssignment_2_1.eContents().get(0);
		private final Group cGroup_2_2 = (Group)cGroup_2.eContents().get(2);
		private final Keyword cCommaKeyword_2_2_0 = (Keyword)cGroup_2_2.eContents().get(0);
		private final Assignment cMappingsAssignment_2_2_1 = (Assignment)cGroup_2_2.eContents().get(1);
		private final RuleCall cMappingsMappingParserRuleCall_2_2_1_0 = (RuleCall)cMappingsAssignment_2_2_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
		
		//Selection:
		//	"Selection" ("item=" item=ID) ("mappings=[" mappings+=Mapping ("," mappings+=Mapping)* "]")?;
		public ParserRule getRule() { return rule; }

		//"Selection" ("item=" item=ID) ("mappings=[" mappings+=Mapping ("," mappings+=Mapping)* "]")?
		public Group getGroup() { return cGroup; }

		//"Selection"
		public Keyword getSelectionKeyword_0() { return cSelectionKeyword_0; }

		//"item=" item=ID
		public Group getGroup_1() { return cGroup_1; }

		//"item="
		public Keyword getItemKeyword_1_0() { return cItemKeyword_1_0; }

		//item=ID
		public Assignment getItemAssignment_1_1() { return cItemAssignment_1_1; }

		//ID
		public RuleCall getItemIDTerminalRuleCall_1_1_0() { return cItemIDTerminalRuleCall_1_1_0; }

		//("mappings=[" mappings+=Mapping ("," mappings+=Mapping)* "]")?
		public Group getGroup_2() { return cGroup_2; }

		//"mappings=["
		public Keyword getMappingsKeyword_2_0() { return cMappingsKeyword_2_0; }

		//mappings+=Mapping
		public Assignment getMappingsAssignment_2_1() { return cMappingsAssignment_2_1; }

		//Mapping
		public RuleCall getMappingsMappingParserRuleCall_2_1_0() { return cMappingsMappingParserRuleCall_2_1_0; }

		//("," mappings+=Mapping)*
		public Group getGroup_2_2() { return cGroup_2_2; }

		//","
		public Keyword getCommaKeyword_2_2_0() { return cCommaKeyword_2_2_0; }

		//mappings+=Mapping
		public Assignment getMappingsAssignment_2_2_1() { return cMappingsAssignment_2_2_1; }

		//Mapping
		public RuleCall getMappingsMappingParserRuleCall_2_2_1_0() { return cMappingsMappingParserRuleCall_2_2_1_0; }

		//"]"
		public Keyword getRightSquareBracketKeyword_2_3() { return cRightSquareBracketKeyword_2_3; }
	}

	public class ListElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "List");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cListKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Keyword cItemKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Assignment cItemAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cItemIDTerminalRuleCall_1_1_0 = (RuleCall)cItemAssignment_1_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Keyword cSeparatorKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Assignment cSeparatorAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
		private final RuleCall cSeparatorSTRINGTerminalRuleCall_2_1_0 = (RuleCall)cSeparatorAssignment_2_1.eContents().get(0);
		
		//List:
		//	"List" ("item=" item=ID) ("separator=" separator=STRING);
		public ParserRule getRule() { return rule; }

		//"List" ("item=" item=ID) ("separator=" separator=STRING)
		public Group getGroup() { return cGroup; }

		//"List"
		public Keyword getListKeyword_0() { return cListKeyword_0; }

		//"item=" item=ID
		public Group getGroup_1() { return cGroup_1; }

		//"item="
		public Keyword getItemKeyword_1_0() { return cItemKeyword_1_0; }

		//item=ID
		public Assignment getItemAssignment_1_1() { return cItemAssignment_1_1; }

		//ID
		public RuleCall getItemIDTerminalRuleCall_1_1_0() { return cItemIDTerminalRuleCall_1_1_0; }

		//"separator=" separator=STRING
		public Group getGroup_2() { return cGroup_2; }

		//"separator="
		public Keyword getSeparatorKeyword_2_0() { return cSeparatorKeyword_2_0; }

		//separator=STRING
		public Assignment getSeparatorAssignment_2_1() { return cSeparatorAssignment_2_1; }

		//STRING
		public RuleCall getSeparatorSTRINGTerminalRuleCall_2_1_0() { return cSeparatorSTRINGTerminalRuleCall_2_1_0; }
	}

	public class MappingElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Mapping");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cCmdAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final Alternatives cCmdAlternatives_0_0 = (Alternatives)cCmdAssignment_0.eContents().get(0);
		private final RuleCall cCmdIDTerminalRuleCall_0_0_0 = (RuleCall)cCmdAlternatives_0_0.eContents().get(0);
		private final RuleCall cCmdSTRINGTerminalRuleCall_0_0_1 = (RuleCall)cCmdAlternatives_0_0.eContents().get(1);
		private final Keyword cEqualsSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cLabelAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final Alternatives cLabelAlternatives_2_0 = (Alternatives)cLabelAssignment_2.eContents().get(0);
		private final RuleCall cLabelIDTerminalRuleCall_2_0_0 = (RuleCall)cLabelAlternatives_2_0.eContents().get(0);
		private final RuleCall cLabelSTRINGTerminalRuleCall_2_0_1 = (RuleCall)cLabelAlternatives_2_0.eContents().get(1);
		
		//Mapping:
		//	cmd=(ID | STRING) "=" label=(ID | STRING);
		public ParserRule getRule() { return rule; }

		//cmd=(ID | STRING) "=" label=(ID | STRING)
		public Group getGroup() { return cGroup; }

		//cmd=(ID | STRING)
		public Assignment getCmdAssignment_0() { return cCmdAssignment_0; }

		//ID | STRING
		public Alternatives getCmdAlternatives_0_0() { return cCmdAlternatives_0_0; }

		//ID
		public RuleCall getCmdIDTerminalRuleCall_0_0_0() { return cCmdIDTerminalRuleCall_0_0_0; }

		//STRING
		public RuleCall getCmdSTRINGTerminalRuleCall_0_0_1() { return cCmdSTRINGTerminalRuleCall_0_0_1; }

		//"="
		public Keyword getEqualsSignKeyword_1() { return cEqualsSignKeyword_1; }

		//label=(ID | STRING)
		public Assignment getLabelAssignment_2() { return cLabelAssignment_2; }

		//ID | STRING
		public Alternatives getLabelAlternatives_2_0() { return cLabelAlternatives_2_0; }

		//ID
		public RuleCall getLabelIDTerminalRuleCall_2_0_0() { return cLabelIDTerminalRuleCall_2_0_0; }

		//STRING
		public RuleCall getLabelSTRINGTerminalRuleCall_2_0_1() { return cLabelSTRINGTerminalRuleCall_2_0_1; }
	}
	
	
	private SitemapModelElements pSitemapModel;
	private SitemapElements pSitemap;
	private WidgetElements pWidget;
	private LinkableWidgetElements pLinkableWidget;
	private FrameElements pFrame;
	private TextElements pText;
	private GroupElements pGroup;
	private ImageElements pImage;
	private SwitchElements pSwitch;
	private SelectionElements pSelection;
	private ListElements pList;
	private MappingElements pMapping;
	private TerminalRule tID;
	
	private final GrammarProvider grammarProvider;

	private TerminalsGrammarAccess gaTerminals;

	@Inject
	public SitemapGrammarAccess(GrammarProvider grammarProvider,
		TerminalsGrammarAccess gaTerminals) {
		this.grammarProvider = grammarProvider;
		this.gaTerminals = gaTerminals;
	}
	
	public Grammar getGrammar() {	
		return grammarProvider.getGrammar(this);
	}
	

	public TerminalsGrammarAccess getTerminalsGrammarAccess() {
		return gaTerminals;
	}

	
	//SitemapModel:
	//	"sitemap" Sitemap;
	public SitemapModelElements getSitemapModelAccess() {
		return (pSitemapModel != null) ? pSitemapModel : (pSitemapModel = new SitemapModelElements());
	}
	
	public ParserRule getSitemapModelRule() {
		return getSitemapModelAccess().getRule();
	}

	//Sitemap:
	//	name=ID ("label=" label=STRING)? ("icon=" icon=STRING)? "{" children+=Widget+ "}";
	public SitemapElements getSitemapAccess() {
		return (pSitemap != null) ? pSitemap : (pSitemap = new SitemapElements());
	}
	
	public ParserRule getSitemapRule() {
		return getSitemapAccess().getRule();
	}

	//Widget:
	//	LinkableWidget | (Switch | Selection | List) ("label=" label=(ID | STRING))? ("icon=" icon=(ID | STRING))?;
	public WidgetElements getWidgetAccess() {
		return (pWidget != null) ? pWidget : (pWidget = new WidgetElements());
	}
	
	public ParserRule getWidgetRule() {
		return getWidgetAccess().getRule();
	}

	//LinkableWidget:
	//	(Text | Group | Image | Frame) ("label=" label=(ID | STRING))? ("icon=" icon=(ID | STRING))? ("{" children+=Widget+
	//	"}")?;
	public LinkableWidgetElements getLinkableWidgetAccess() {
		return (pLinkableWidget != null) ? pLinkableWidget : (pLinkableWidget = new LinkableWidgetElements());
	}
	
	public ParserRule getLinkableWidgetRule() {
		return getLinkableWidgetAccess().getRule();
	}

	//Frame:
	//	"Frame" {Frame} ("item=" item=ID)?;
	public FrameElements getFrameAccess() {
		return (pFrame != null) ? pFrame : (pFrame = new FrameElements());
	}
	
	public ParserRule getFrameRule() {
		return getFrameAccess().getRule();
	}

	//Text:
	//	"Text" {Text} ("item=" item=ID)?;
	public TextElements getTextAccess() {
		return (pText != null) ? pText : (pText = new TextElements());
	}
	
	public ParserRule getTextRule() {
		return getTextAccess().getRule();
	}

	//Group:
	//	"Group" ("item=" item=ID);
	public GroupElements getGroupAccess() {
		return (pGroup != null) ? pGroup : (pGroup = new GroupElements());
	}
	
	public ParserRule getGroupRule() {
		return getGroupAccess().getRule();
	}

	//Image:
	//	"Image" ("item=" item=ID)? ("url=" url=STRING);
	public ImageElements getImageAccess() {
		return (pImage != null) ? pImage : (pImage = new ImageElements());
	}
	
	public ParserRule getImageRule() {
		return getImageAccess().getRule();
	}

	//Switch:
	//	"Switch" ("item=" item=ID) ("mappings=[" mappings+=Mapping ("," mappings+=Mapping)* "]")?;
	public SwitchElements getSwitchAccess() {
		return (pSwitch != null) ? pSwitch : (pSwitch = new SwitchElements());
	}
	
	public ParserRule getSwitchRule() {
		return getSwitchAccess().getRule();
	}

	//Selection:
	//	"Selection" ("item=" item=ID) ("mappings=[" mappings+=Mapping ("," mappings+=Mapping)* "]")?;
	public SelectionElements getSelectionAccess() {
		return (pSelection != null) ? pSelection : (pSelection = new SelectionElements());
	}
	
	public ParserRule getSelectionRule() {
		return getSelectionAccess().getRule();
	}

	//List:
	//	"List" ("item=" item=ID) ("separator=" separator=STRING);
	public ListElements getListAccess() {
		return (pList != null) ? pList : (pList = new ListElements());
	}
	
	public ParserRule getListRule() {
		return getListAccess().getRule();
	}

	//Mapping:
	//	cmd=(ID | STRING) "=" label=(ID | STRING);
	public MappingElements getMappingAccess() {
		return (pMapping != null) ? pMapping : (pMapping = new MappingElements());
	}
	
	public ParserRule getMappingRule() {
		return getMappingAccess().getRule();
	}

	//terminal ID:
	//	"^"? ("a".."z" | "A".."Z" | "_" | "0".."9")+;
	public TerminalRule getIDRule() {
		return (tID != null) ? tID : (tID = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "ID"));
	} 

	//terminal INT returns ecore::EInt:
	//	"0".."9"+;
	public TerminalRule getINTRule() {
		return gaTerminals.getINTRule();
	} 

	//terminal STRING:
	//	"\"" ("\\" ("b" | "t" | "n" | "f" | "r" | "\"" | "\'" | "\\") | !("\\" | "\""))* "\"" | "\'" ("\\" ("b" | "t" | "n" |
	//	"f" | "r" | "\"" | "\'" | "\\") | !("\\" | "\'"))* "\'";
	public TerminalRule getSTRINGRule() {
		return gaTerminals.getSTRINGRule();
	} 

	//terminal ML_COMMENT:
	//	"/ *"->"* /";
	public TerminalRule getML_COMMENTRule() {
		return gaTerminals.getML_COMMENTRule();
	} 

	//terminal SL_COMMENT:
	//	"//" !("\n" | "\r")* ("\r"? "\n")?;
	public TerminalRule getSL_COMMENTRule() {
		return gaTerminals.getSL_COMMENTRule();
	} 

	//terminal WS:
	//	(" " | "\t" | "\r" | "\n")+;
	public TerminalRule getWSRule() {
		return gaTerminals.getWSRule();
	} 

	//terminal ANY_OTHER:
	//	.;
	public TerminalRule getANY_OTHERRule() {
		return gaTerminals.getANY_OTHERRule();
	} 
}
